/**
 * Created by lihao on 2017/6/28.
 */
const path = require('path');
const fs = require('fs');
const _ = require('lodash');
const moment = require('moment');
const sizeOf = require('image-size');

exports = module.exports = function (req, res) {
	var filePath = '';
	//如果提交文件的form中将上传文件的input名设置为tmpFile，就从tmpFile中取上传文件。否则取for in循环第一个上传的文件。  
	var files = req.files;
	if (!_.isArray(files.file)) {
		filePath = files.file.path;
	} else {
		for (var key in files.file) {
			if (files.file[key].path && filePath === '') {
				filePath = files.file[key].path;
				break;
			}
		}
	}

	//文件移动的目录文件夹，不存在时创建目标文件夹  
	var toDay = moment().format('YYYYMMDD');
	var targetDir = path.join(process.cwd(), 'public/img/upload/' + toDay);
	if (!fs.existsSync(targetDir)) {
		fs.mkdir(targetDir);
	}
	var fileExt = filePath.substring(filePath.lastIndexOf('.'));
	//判断文件类型是否允许上传  
	if (('.jpg.jpeg.png.gif').indexOf(fileExt.toLowerCase()) === -1) {
		var err = new Error('此文件类型不允许上传');
		res.json({code: -1, message: '此文件类型不允许上传'});
	} else {
		//以当前时间戳对上传文件进行重命名  
		var dimensions = sizeOf(filePath);
		var fileName = new Date().getTime() + '_'  + dimensions.width + '_'  + dimensions.height + fileExt;
		var targetFile = path.join(targetDir, fileName);
		console.log(filePath, targetFile);
		//移动文件  
		fs.rename(filePath, targetFile, function (err) {
			if (err) {
				console.info(err);
				res.json({code: 0, message: '操作失败'});
			} else {
				//上传成功，返回文件的相对路径  
				var fileUrl = '/img/upload/' + toDay + '/' + fileName;
				res.json({code: 1, url: fileUrl, message: '上传图片成功'});
			}
		});
	}
};
